<?php

class CreditsController extends Controller
{
	public function filters() {
		return array(
			array('application.filters.isAuthorizedFilter'),
			array('application.filters.accessControlFilter + list','roles'=>array(Users::ADMIN_ROLE,Users::MANAGER_ROLE)),
			array('application.filters.accessControlFilter + new','roles'=>array(Users::OPERATOR_ROLE)),
		);
	}

	public function actionSearch()
	{
		$dataProvider = null;

		$SearchForm = new SearchForm();

		if(isset($_POST['SearchForm'])){
			$SearchForm->attributes = Yii::app()->input->stripClean($_POST['SearchForm']);
			if($SearchForm->validate())
				$dataProvider = $SearchForm->searchCredit();
		}

		$this->render('search',array('SearchForm'=>$SearchForm,'dataProvider'=>$dataProvider));
	}

	public function actionList()
	{
		$model = new Credits('search');
		$model->unsetAttributes();
		if(isset($_GET['Credits'])){
			$model->attributes=$_GET['Credits'];
		}
		$this->render('list', array(
			'model'=>$model,
		));
	}

	public function actionView($id)
	{
		// TODO: вынести проверку в отдельный метод
		$model = Credits::model()->findByPk($id);

		//проверяем, есть ли вообще такой договор у данной организации
		if(!$model)
			throw new CHttpException(403, 'Информация по договору недоступна.');

		if(Yii::app()->user->getState('role') != Users::ADMIN_ROLE)
			if($model->shops->organization_id != Yii::app()->user->getState('organization_id'))
				throw new CHttpException(403, 'Информация по договору недоступна.');

		//присваиваем рассрочке (кредиту) новый статус, если он только получен с главного сервера
		if ($model->status == Credits::STATUS_NEW_SCORRING)
			$model->newStatus();

		Yii::app()->searchHistory->addCreditEntry($id);

		$this->render('view', array('Credit' => $model));
	}

	public function actionNew()
	{
		$Credits = new Credits();
		$this->render('new', array('model' => $Credits->CreditsNew()));
	}

	public function actionAdd($id)
	{
		//проверяем, есть ли вообще клиент с $id в БД
		if(!($client = Clients::model()->findByPk($id)))
			throw new CHttpException(404, 'Вы пытаетесь зарегистрировать кредит на несуществующего клиента.');

		$Credits = new Credits();

		if(isset($_POST['Credits']))
		{
			$Credits->attributes = Yii::app()->input->stripClean($_POST['Credits']);
			$Credits->client_id = $id;
			$Credits->user_id = Yii::app()->user->id;
			$Credits->shop_id = Yii::app()->user->getState('shop_id');
			$Credits->created_at = date('Y-m-d H:i:s');
			$Credits->status = Credits::STATUS_SCORRING;

			if($Credits->save())
				$this->redirect(Yii::app()->createUrl('clients/view',array('id'=>$client->id)));
		}

		$this->render('add', array(
			'Credits' => $Credits,
			'client' => $client
		));

	}

	public function actionPrintContract($id)
	{
		// TODO: вынести проверку в отдельный метод
		$model = Credits::model()->findByPk($id);

		//проверяем, есть ли вообще такой договор у данной организации
		if(!$model)
			throw new CHttpException(403, 'Информация по договору недоступна.');

		if(Yii::app()->user->getState('role') != Users::ADMIN_ROLE)
			if($model->shops->organization_id != Yii::app()->user->getState('organization_id'))
				throw new CHttpException(403, 'Информация по договору недоступна.');

		$pdf = Yii::createComponent('application.extensions.tcpdf.ETcPdf', 'P', 'cm', 'A4', true, 'UTF-8');
		$pdf->SetCreator(PDF_CREATOR);
		$pdf->SetAuthor("Credit CRM");
		$pdf->SetTitle("Договор");
		$pdf->SetSubject("Договор");
		$pdf->SetKeywords("Договор");
		$pdf->setPrintHeader(false);
		$pdf->setPrintFooter(false);
		$pdf->AddPage();
		$pdf->SetFont('freeserif', '', 10);
		$tbl = $this->renderPartial('_contract',array('model'=>$model),true);

		$pdf->writeHTML($tbl, true, false, false, false, '');
		$pdf->Output('contract_'.$id.'_'.date('d_m_Y').'.pdf', 'I');
	}
}